package com.lnj.orders.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lnj.bean.dto.OrdersDTO;
import com.lnj.bean.dto.OrdersItemsDTO;
import com.lnj.bean.model.Orders;
import com.lnj.orders.utils.OrderListResponse;
import com.lnj.orders.utils.ProductOrderInfo;

import java.math.BigDecimal;
import java.util.List;

/**
 * @program: shopping147_cloud
 * @description:
 * @author: zy
 * @create: 2025-08-02 14:02
 */
public interface OrdersService extends IService<Orders> {
    /**
     * 创建一个新订单
     *
     * @param ordersDTO         订单数据
     * @param orderItemsDTOList 订单项数据列表
     * @param cartIds
     * @return 成功创建的订单ID
     */
    OrdersDTO createOrder(Long userId, OrdersDTO ordersDTO, List<OrdersItemsDTO> orderItemsDTOList, List<Long> cartIds);

    /**
     * 根据订单ID获取订单详情
     * @param orderId 订单ID
     * @return 订单详情
     */
    OrdersDTO getOrderById(Long orderId,Long orderStatus);

    /**
     * 计算订单总金额
     *
     * @param orderId 订单ID
     * @return 订单总金额
     */
    Double calculateTotalPrice(Long orderId);

    //获取订单的商品列表
    List<ProductOrderInfo> getOrderdetalById(Long orderId);
    //根据订单ID取消订单
    Integer cancelOrder(Long orderId);

    //根据订单状态查询订单列表
    List<OrderListResponse> getOrderList(Long userId, Long orderStatus);

    //更新订单状态
    void updateStatus(Long id, int orderStatus);
}
